perm filename TRAVEL[E83,JMC]1 blob
sn#719036 filedate 1983-07-09 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 Transcribed 7/5/83
C00010 ENDMK
Cā;
Transcribed 7/5/83
Write a prolog planner of travel for the course at the end of
July. It should include, first of all, straightforward reasoning and then
mathematical reasoning,meta-mathematical reasoning, and it should be able
to do non-monotonic reasoning. Ordinarily it operates the program and
looks at the database but it can also look at the program as data base.
It does temporal reasoning as well. See if we can make it do plan before
acting.
One possible domain is the subset for the adventure game. Leaving
out the part which is difficult for human beings, which is retrieving the
relevant facts. It might be possible to imagine that there is a large
memory and that we use specific operations to retrieve facts from the
large memory. That is, the large memory is not part of the Prolog
database. Of course, we'll use introspection also. For this it
might be worthwhile to consider that we have a duplicate of the program,
all or parts of it, in some different notation which is more suitable for
thinking about than the standard notation.
Actions should have HOW fields. The HOW field may contain a method,
but it also may contain an assertion
that something else is to be done before or after the action.
Secondly, we probably need to be able to match a variable in an unknown
position. In other words, suppose that part of a plan is going somewhere,
and this going somewhere may be deep down, then we want to be able to match
that with something and the way to do it involves a sort of second order
logic. We write it first and assume it works and then figure out how to
do it or let David Warren figure out how to do it. For example, if the plan
involves flying somewhere and the airlines are on strike, then replace
that part by chartering a plane.
Consider a system that goes through a fixed planning cycle at each step, for
example, if it says I'm walking towards X and it wants to continue, it still
wants to go to X, then it merely says continue walking. It has some other
collection of productions that get fired, and then it sort of wakes up again
and re-does the thing, if it's still walking towards X, well then it continues,
if it's got to X then it stops and so forth. To exercise such a system we
need a world program that will simulate the world.
What about ASSERT? Do we program using it?
This should be what distinguishes the Prolog database from the program. In
contrast to
Yoram's solution to the Berliner position, we want
a basic forward chaining approach rather than backward
chaining, or at least a kind of production system react to the situation.
The simplest form of action is hill-climbing and in some sense we ask will
hill-climbing work, and if it won't then we try something more complicated.
Reifications play a heavy role.
For the block's world it looks like the basic predicate is
something like make tower A on B by action sequence X. And then this is
obtained by clear A, make tower1(B,X,Y). clear X should be clear(x,z).
Building a tower of blocks done in an ad hoc way may make a good LISP
program for CS206.
Allowing stacks of blocks that are not too heavy to be moved en masse is asking
for the minimal plan. A straightforward way of looking at the blocks thing is
that we clear B, and then in the result of clearing B we move A on to B so that
the result formalism plays an important role.
Digression to the situation calculus: this is an alternative to the relativistic
situations that I've been thinking about. We have an initial situation and
we perform some action, then instead of talking about the situation that
results from that action we may talk about after, the situation after that
action, where we do not suppose that the situation is a function solely of the
action and the initial situation , it is also a function of the other events
which occur. Perhaps it can be the result after all, namely we can
imagine that the other situation contains in it what will occur, so you do have
a result: it just gets axiomatized differently. We have to worry about
whether we need as situations - states of knowledge or states of the
world. That result is the result of some event and we don't know whether
this event will occur, but we imagine the rest of the world then, so to
speak, proceeds normally.
The result of 5 p.m. means that which will be true at 5 p.m. (inaudible) for
the second order prolog would be something like fix a plan subject to a
circumstance so the plan contains flying buried in it somewhere and there's
this airline strike. Prolog needs a way of switching between a spread-out
database with the predicates addressed individually and a data structure in
which all that material is stored.